package com.biz.primus.ms.oms.service.delivery;

import com.biz.primus.model.oms.vo.OrderPayAndReceiptVo;
import com.biz.primus.ms.oms.dao.po.OmsOrder;
import org.springframework.transaction.annotation.Transactional;

/**
 * 配送状态服务:
 *      订单需要进行配送时, 通知配送APP;
 *      订单取消配送时,也要通知APP
 *      订单为自提时,需要生成自提码
 *      需要通过自提码查询自提订单
 *
 * @author yanweijin
 * @date 2017/10/18
 */
public interface DeliveryStateService {


	/**
	 * 通知配送app开始配送
	 * @param orderCode 订单编号
	 */
	void notifyDeliveryApp(String orderCode);


	/**
	 * 通知配送App取消配送
	 * @param orderCode
	 */
	void notifyDeliveryAppCancel(String orderCode);

	/**
	 * 给订单生成自提码并存储（规则：10位，不能重复，不能连续）
	 * @param order
	 * @return
	 */
	@Transactional(rollbackFor = Exception.class)
	String generateToken(OmsOrder order);

	/**
	 * 根据自提码和门店编号,查询订单编号
	 * @param token
	 * @param depot
	 * @return
	 */
	String getOrderCodeByToken(String token, String depot);

	/**
	 * 部分订单商品签收及支付（未签收的商品生成退单）
	 *
	 *
	 *
	 * @param orderPayAndReceiptVo
	 */
	void orderPayAndReceipt(OrderPayAndReceiptVo orderPayAndReceiptVo);
}
